home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / seq_tests.py < prev    next >
Text File  |  2005-10-18  |  8KB  |  207 lines

  1. """
  2. Tests common to tuple, list and UserList.UserList
  3. """
  4.  
  5. import unittest
  6. from test import test_support
  7.  
  8. class CommonTest(unittest.TestCase):
  9.     # The type to be tested
  10.     type2test = None
  11.  
  12.     def test_constructors(self):
  13.         l0 = []
  14.         l1 = [0]
  15.         l2 = [0, 1]
  16.  
  17.         u = self.type2test()
  18.         u0 = self.type2test(l0)
  19.         u1 = self.type2test(l1)
  20.         u2 = self.type2test(l2)
  21.  
  22.         uu = self.type2test(u)
  23.         uu0 = self.type2test(u0)
  24.         uu1 = self.type2test(u1)
  25.         uu2 = self.type2test(u2)
  26.  
  27.         v = self.type2test(tuple(u))
  28.         class OtherSeq:
  29.             def __init__(self, initseq):
  30.                 self.__data = initseq
  31.             def __len__(self):
  32.                 return len(self.__data)
  33.             def __getitem__(self, i):
  34.                 return self.__data[i]
  35.         s = OtherSeq(u0)
  36.         v0 = self.type2test(s)
  37.         self.assertEqual(len(v0), len(s))
  38.  
  39.         s = "this is also a sequence"
  40.         vv = self.type2test(s)
  41.         self.assertEqual(len(vv), len(s))
  42.  
  43.     def test_truth(self):
  44.         self.assert_(not self.type2test())
  45.         self.assert_(self.type2test([42]))
  46.  
  47.     def test_getitem(self):
  48.         u = self.type2test([0, 1, 2, 3, 4])
  49.         for i in xrange(len(u)):
  50.             self.assertEqual(u[i], i)
  51.             self.assertEqual(u[long(i)], i)
  52.         for i in xrange(-len(u), -1):
  53.             self.assertEqual(u[i], len(u)+i)
  54.             self.assertEqual(u[long(i)], len(u)+i)
  55.         self.assertRaises(IndexError, u.__getitem__, -len(u)-1)
  56.         self.assertRaises(IndexError, u.__getitem__, len(u))
  57.         self.assertRaises(ValueError, u.__getitem__, slice(0,10,0))
  58.  
  59.         u = self.type2test()
  60.         self.assertRaises(IndexError, u.__getitem__, 0)
  61.         self.assertRaises(IndexError, u.__getitem__, -1)
  62.  
  63.         self.assertRaises(TypeError, u.__getitem__)
  64.  
  65.         a = self.type2test([10, 11])
  66.         self.assertEqual(a[0], 10)
  67.         self.assertEqual(a[1], 11)
  68.         self.assertEqual(a[-2], 10)
  69.         self.assertEqual(a[-1], 11)
  70.         self.assertRaises(IndexError, a.__getitem__, -3)
  71.         self.assertRaises(IndexError, a.__getitem__, 3)
  72.  
  73.     def test_getslice(self):
  74.         l = [0, 1, 2, 3, 4]
  75.         u = self.type2test(l)
  76.  
  77.         self.assertEqual(u[0:0], self.type2test())
  78.         self.assertEqual(u[1:2], self.type2test([1]))
  79.         self.assertEqual(u[-2:-1], self.type2test([3]))
  80.         self.assertEqual(u[-1000:1000], u)
  81.         self.assertEqual(u[1000:-1000], self.type2test([]))
  82.         self.assertEqual(u[:], u)
  83.         self.assertEqual(u[1:None], self.type2test([1, 2, 3, 4]))
  84.         self.assertEqual(u[None:3], self.type2test([0, 1, 2]))
  85.  
  86.         # Extended slices
  87.         self.assertEqual(u[::], u)
  88.         self.assertEqual(u[::2], self.type2test([0, 2, 4]))
  89.         self.assertEqual(u[1::2], self.type2test([1, 3]))
  90.         self.assertEqual(u[::-1], self.type2test([4, 3, 2, 1, 0]))
  91.         self.assertEqual(u[::-2], self.type2test([4, 2, 0]))
  92.         self.assertEqual(u[3::-2], self.type2test([3, 1]))
  93.         self.assertEqual(u[3:3:-2], self.type2test([]))
  94.         self.assertEqual(u[3:2:-2], self.type2test([3]))
  95.         self.assertEqual(u[3:1:-2], self.type2test([3]))
  96.         self.assertEqual(u[3:0:-2], self.type2test([3, 1]))
  97.         self.assertEqual(u[::-100], self.type2test([4]))
  98.         self.assertEqual(u[100:-100:], self.type2test([]))
  99.         self.assertEqual(u[-100:100:], u)
  100.         self.assertEqual(u[100:-100:-1], u[::-1])
  101.         self.assertEqual(u[-100:100:-1], self.type2test([]))
  102.         self.assertEqual(u[-100L:100L:2L], self.type2test([0, 2, 4]))
  103.  
  104.         # Test extreme cases with long ints
  105.         a = self.type2test([0,1,2,3,4])
  106.         self.assertEqual(a[ -pow(2,128L): 3 ], self.type2test([0,1,2]))
  107.         self.assertEqual(a[ 3: pow(2,145L) ], self.type2test([3,4]))
  108.  
  109.         self.assertRaises(TypeError, u.__getslice__)
  110.  
  111.     def test_contains(self):
  112.         u = self.type2test([0, 1, 2])
  113.         for i in u:
  114.             self.assert_(i in u)
  115.         for i in min(u)-1, max(u)+1:
  116.             self.assert_(i not in u)
  117.  
  118.         self.assertRaises(TypeError, u.__contains__)
  119.  
  120.     def test_len(self):
  121.         self.assertEqual(len(self.type2test()), 0)
  122.         self.assertEqual(len(self.type2test([])), 0)
  123.         self.assertEqual(len(self.type2test([0])), 1)
  124.         self.assertEqual(len(self.type2test([0, 1, 2])), 3)
  125.  
  126.     def test_minmax(self):
  127.         u = self.type2test([0, 1, 2])
  128.         self.assertEqual(min(u), 0)
  129.         self.assertEqual(max(u), 2)
  130.  
  131.     def test_addmul(self):
  132.         u1 = self.type2test([0])
  133.         u2 = self.type2test([0, 1])
  134.         self.assertEqual(u1, u1 + self.type2test())
  135.         self.assertEqual(u1, self.type2test() + u1)
  136.         self.assertEqual(u1 + self.type2test([1]), u2)
  137.         self.assertEqual(self.type2test([-1]) + u1, self.type2test([-1, 0]))
  138.         self.assertEqual(self.type2test(), u2*0)
  139.         self.assertEqual(self.type2test(), 0*u2)
  140.         self.assertEqual(self.type2test(), u2*0L)
  141.         self.assertEqual(self.type2test(), 0L*u2)
  142.         self.assertEqual(u2, u2*1)
  143.         self.assertEqual(u2, 1*u2)
  144.         self.assertEqual(u2, u2*1L)
  145.         self.assertEqual(u2, 1L*u2)
  146.         self.assertEqual(u2+u2, u2*2)
  147.         self.assertEqual(u2+u2, 2*u2)
  148.         self.assertEqual(u2+u2, u2*2L)
  149.         self.assertEqual(u2+u2, 2L*u2)
  150.         self.assertEqual(u2+u2+u2, u2*3)
  151.         self.assertEqual(u2+u2+u2, 3*u2)
  152.  
  153.         class subclass(self.type2test):
  154.             pass
  155.         u3 = subclass([0, 1])
  156.         self.assertEqual(u3, u3*1)
  157.         self.assert_(u3 is not u3*1)
  158.  
  159.     def test_iadd(self):
  160.         u = self.type2test([0, 1])
  161.         u += self.type2test()
  162.         self.assertEqual(u, self.type2test([0, 1]))
  163.         u += self.type2test([2, 3])
  164.         self.assertEqual(u, self.type2test([0, 1, 2, 3]))
  165.         u += self.type2test([4, 5])
  166.         self.assertEqual(u, self.type2test([0, 1, 2, 3, 4, 5]))
  167.  
  168.         u = self.type2test("spam")
  169.         u += self.type2test("eggs")
  170.         self.assertEqual(u, self.type2test("spameggs"))
  171.  
  172.     def test_imul(self):
  173.         u = self.type2test([0, 1])
  174.         u *= 3
  175.         self.assertEqual(u, self.type2test([0, 1, 0, 1, 0, 1]))
  176.  
  177.     def test_getitemoverwriteiter(self):
  178.         # Verify that __getitem__ overrides are not recognized by __iter__
  179.         class T(self.type2test):
  180.             def __getitem__(self, key):
  181.                 return str(key) + '!!!'
  182.         self.assertEqual(iter(T((1,2))).next(), 1)
  183.  
  184.     def test_repeat(self):
  185.         for m in xrange(4):
  186.             s = tuple(range(m))
  187.             for n in xrange(-3, 5):
  188.                 self.assertEqual(self.type2test(s*n), self.type2test(s)*n)
  189.             self.assertEqual(self.type2test(s)*(-4), self.type2test([]))
  190.             self.assertEqual(id(s), id(s*1))
  191.  
  192.     def test_subscript(self):
  193.         a = self.type2test([10, 11])
  194.         self.assertEqual(a.__getitem__(0L), 10)
  195.         self.assertEqual(a.__getitem__(1L), 11)
  196.         self.assertEqual(a.__getitem__(-2L), 10)
  197.         self.assertEqual(a.__getitem__(-1L), 11)
  198.         self.assertRaises(IndexError, a.__getitem__, -3)
  199.         self.assertRaises(IndexError, a.__getitem__, 3)
  200.         self.assertEqual(a.__getitem__(slice(0,1)), self.type2test([10]))
  201.         self.assertEqual(a.__getitem__(slice(1,2)), self.type2test([11]))
  202.         self.assertEqual(a.__getitem__(slice(0,2)), self.type2test([10, 11]))
  203.         self.assertEqual(a.__getitem__(slice(0,3)), self.type2test([10, 11]))
  204.         self.assertEqual(a.__getitem__(slice(3,5)), self.type2test([]))
  205.         self.assertRaises(ValueError, a.__getitem__, slice(0, 10, 0))
  206.         self.assertRaises(TypeError, a.__getitem__, 'x')
  207.